
package com.e885.util.numeric;

import java.text.DecimalFormat;

/**
 * <br>
 * Copyright: Copyright (c) 2001-2008<br>
 * Company: E885 Group
 * 
 * @author Eric.Kao(gau168.gau@msa.hinet.net)
 * @version 1.0
 */

public class DoubleUtil
{
	/**
	 * get the object of the Double
	 * 
	 * @param source
	 * @return
	 */
	public static Double getDouble( String source )
	{
		if( source == null || source.trim().length() == 0 )
			return null;

		return new Double( source );
	}

	/**
	 * get the value
	 * 
	 * @param obj
	 * @return
	 */
	public static double getValue( Double obj )
	{
		if( obj == null )
			return 0.0;
		else
			return obj.doubleValue();
	}

	/**
	 * 取得小數點第 N 位, 並做四捨五入
	 * 
	 * @param value 原值
	 * @param idx 取得小數點第 N 位
	 * @return
	 */
	public static double getDecimalPoint( double value, int idx )
	{
		if( idx < 0 )
			throw new IllegalArgumentException( "the value of the idx is error" );

		return ( int )( value * Math.pow( 10.0, ( double )idx ) + 0.5 ) / Math.pow( 10.0, ( double )idx );
	}

	/**
	 * 取得小數點第 N 位, 並做四捨五入
	 * 
	 * @param value 原值
	 * @param idx 取得小數點第 N 位
	 * @return
	 */
	public static String getDecimalPointString( double value, int idx )
	{
		if( idx < 0 )
			throw new IllegalArgumentException( "the value of the idx is error" );

		String pattern = "###,###,###,###,###,###,###";

		if( idx >= 1 )
			pattern += ".#";

		for( int i = 1; i < idx; i++ )
			pattern += "#";

		return new DecimalFormat( pattern ).format( value );
	}
}
